package com.xbongbong.paas.service;

import com.xbongbong.paas.pojo.dto.CallBlockRuleDTO;
import com.xbongbong.paas.pojo.dto.CallSetEffectiveTimeDTO;
import com.xbongbong.paas.pojo.dto.CallSwitchAutoOpenDetailDTO;
import com.xbongbong.paas.pojo.dto.CallSwitchAutoOpenDisturbDTO;
import com.xbongbong.paas.pojo.dto.CallSwitchBatchCallDTO;
import com.xbongbong.paas.pojo.vo.CallBlockRuleVO;
import com.xbongbong.paas.pojo.vo.CallCenterConfigVO;
import com.xbongbong.paas.pojo.vo.CallSetEffectiveTimeVO;
import com.xbongbong.paas.pojo.vo.CallSwitchAutoOpenDetailVO;
import com.xbongbong.paas.pojo.vo.CallSwitchAutoOpenDisturbVO;
import com.xbongbong.paas.pojo.vo.CallSwitchBatchCallVO;
import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.paas.toolbox.wrap.XbbResponse;

/**
 * @author youli.chen
 * @version v1.0
 * @description: 呼叫中心配置业务层
 * @date 2019/2/13 13:54
 * @since v1.0
 */
public interface CallCenterConfigService {

    /**
     * 获取该公司的话务中心设置，如果没有则新建
     *
     * @param corpid 公司id
     * @return 设置的持久层对象
     * @throws XbbException 销帮帮设定的异常
     * @author youli.chen
     * @version v1.0
     * @since v1.0
     */
    XbbResponse<CallCenterConfigVO> getByCorpId(String corpid, Integer moduleType) throws XbbException;

    /**
     * 开关自动打开详情开关(来电是否自动弹出客户详情)
     *
     * @param callSwitchAutoOpenDetailDTO 开关自动打开详情开关(来电是否自动弹出客户详情)入参
     * @return CallSwitchAutoOpenDetailVO 开关自动打开详情开关(来电是否自动弹出客户详情)回参
     * @throws XbbException 销帮帮设定的异常
     * @author youli.chen
     * @version v1.0
     * @since v1.0
     */
    XbbResponse<CallSwitchAutoOpenDetailVO> switchAutoOpenDetail(CallSwitchAutoOpenDetailDTO callSwitchAutoOpenDetailDTO) throws XbbException;

    /**
     * 开启批量外呼（主要是销帮帮呼叫中心）
     *
     * @param callSwitchBatchCallDTO 开启批量外呼（主要是销帮帮呼叫中心）入参
     * @return CallSwitchBatchCallVO 开启批量外呼（主要是销帮帮呼叫中心）回参
     * @throws XbbException 销帮帮设定的异常
     * @author youli.chen
     * @version v1.0
     * @since v1.0
     */
    XbbResponse<CallSwitchBatchCallVO> switchBatchCall(CallSwitchBatchCallDTO callSwitchBatchCallDTO) throws XbbException;

    /**
     * 开启防骚扰策略（主要是销帮帮呼叫中心）
     *
     * @param callSwitchAutoOpenDisturbDTO 开启防骚扰策略（主要是销帮帮呼叫中心）入参
     * @return CallSwitchAutoOpenDisturbVO 开启防骚扰策略（主要是销帮帮呼叫中心）回参
     * @throws XbbException 销帮帮设定的异常
     * @author youli.chen
     * @version v1.0
     * @since v1.0
     */
    XbbResponse<CallSwitchAutoOpenDisturbVO> switchAutoOpenDisturb(CallSwitchAutoOpenDisturbDTO callSwitchAutoOpenDisturbDTO) throws XbbException;

    /**
     * 开启防封号规则（主要是销帮帮呼叫中心）
     *
     * @param callBlockRuleDTO 开启防封号规则（主要是销帮帮呼叫中心）入参
     * @return CallBlockRuleVO 开启防封号规则（主要是销帮帮呼叫中心）回参
     * @throws XbbException 销帮帮设定的异常
     * @author youli.chen
     * @version v1.0
     * @since v1.0
     */
    XbbResponse<CallBlockRuleVO> switchBlockRule(CallBlockRuleDTO callBlockRuleDTO) throws XbbException;

    /**
     * 自定义设置有效通话时长（主要是销帮帮呼叫中心）
     *
     * @param callSetEffectiveTimeDTO 自定义设置有效通话时长（主要是销帮帮呼叫中心）入参
     * @return CallSetEffectiveTimeVO 自定义设置有效通话时长（主要是销帮帮呼叫中心）回参
     * @throws XbbException 销帮帮设定的异常
     * @author youli.chen
     * @version v1.0
     * @since v1.0
     */
    XbbResponse<CallSetEffectiveTimeVO> setEffectiveTime(CallSetEffectiveTimeDTO callSetEffectiveTimeDTO) throws XbbException;
}
